<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 传统的对象  默认可以对该对象 取值 赋值 删除属性  循环遍历

    // var obj = {
    //     name: "张三",
    //     age: 18,
    //     height: "176cm",
    //     weight: "70kg",
    // }

    // // 取值
    // console.log(obj.name);

    // // 赋值
    // obj.name = "李四";

    // 删除
    // delete obj.height;

    // console.log(obj);

    // for (var key in obj) {
    //     console.log(key, obj[key]);
    // }


    // 能否自定义一个对象的属性是否可以修改  删除 遍历  => 给对象添加属性修饰!

    // 构造函数Object的方法
    // Object.defineProperty(target,key,desc)      定义对象的属性修饰(每次只能定义一个)
    // target 目标对象
    // key    属性名
    // desc   属性修饰的描述(对象)
    //        value     属性值
    //        writable     属性是否可以被修改 (默认true)
    //        enumerable     属性是否可以被枚举(遍历) (默认true)
    //        configurable     属性是否可修改配置 (默认:true)


    var zhang = {};
    Object.defineProperty(zhang, "name", {
        value: "张三",
        writable: false,
        enumerable: false,
        configurable: false,
    })


    Object.defineProperty(zhang, "age", {
        value: 18,
        writable: true,
        enumerable: true,
        configurable: true,
    })

    Object.defineProperty(zhang, "height", {
        value: "173cm",
        writable: true,
        enumerable: true,
        configurable: true,
    })

    Object.defineProperty(zhang, "weight", {
        value: "65kg",
        writable: true,
        enumerable: true,
        configurable: true,
    })

    // zhang.name = "李四";

    // for (var key in zhang) {
    //     console.log(key);
    // }

    // console.log(delete zhang.name);
    // console.log(zhang);



    // Object.defineProperties(target,options)     定义对象的属性修饰(定义一个或多个)
    // target 目标对象
    // options  (对象)可以定义对象的属性和属性描述的 {key:desc,key:desc}

    var zhang = {};
    Object.defineProperties(zhang, {
        "name": {
            value: "张三",
            writable: false,
            enumerable: false,
            configurable: false,
        },
        "age": {
            value: "18",
            writable: false,
            enumerable: false,
            configurable: false,
        },
        "height": {
            value: "183cm",
            writable: false,
            enumerable: false,
            configurable: false,
        },
        "weight": {
            value: "80kg",
            writable: false,
            enumerable: false,
            configurable: false,
        }
    })






</script>

</html>